﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;

namespace BelDecor.Net.Pages
{
    public partial class ConsultaPedido : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ValidaSeguranca("ConsultaPedido");
            }
        }

        protected void ddlCliente_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
        {
            List<Domain.Model.VwCliente> data = GetData(e.Text);

            int itemOffset = e.NumberOfItems;
            int endOffset = Math.Min(itemOffset + 10, data.Count);
            e.EndOfItems = endOffset == data.Count;

            ddlCliente.Items.Add(new RadComboBoxItem("Selecione o cliente", "0"));

            for (int i = itemOffset; i < endOffset; i++)
            {
                ddlCliente.Items.Add(new RadComboBoxItem(data[i].nome.ToString(), data[i].id.ToString()));
            }

            e.Message = GetStatusMessage(endOffset, data.Count);
        }

        private static string GetStatusMessage(int offset, int total)
        {
            if (total <= 0)
                return "Sem resultado";

            return String.Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>", offset, total);
        }

        private static List<Domain.Model.VwCliente> GetData(string text)
        {
            var lstCliente = Domain.Model.VwCliente.All().Where(c => c.nome.Contains(text.Trim())).ToList();
            return lstCliente;
        }

        void PopulaPedidos()
        {
            int idCliente = 0;
            string codigoPedido = "";

            if (ddlCliente.SelectedValue != "")
            {
                idCliente = int.Parse(ddlCliente.SelectedValue);
            }

            if (!string.IsNullOrEmpty(txtCodPedido.Text))
            {
                codigoPedido = txtCodPedido.Text.Trim();
            }

            var lstPedidos = Domain.Model.vwPedido.All()
                .Where(p => (!string.IsNullOrEmpty(codigoPedido) ? p.CodigoPedido == codigoPedido : true)
                         && (idCliente > 0 ? p.IdCliente == idCliente : true))
                         .ToList();


            grdPedido.DataSource = lstPedidos;
            grdPedido.DataBind();

        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            PopulaPedidos();
        }

        protected void btnNovo_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Pages/Pedido.aspx", true);
        }

        protected void grdPedido_ItemCommand(object sender, GridCommandEventArgs e)
        {
            if (e.CommandName == "Editar")
            {
                RedirecionaEditaPedido(int.Parse(e.CommandArgument.ToString()));
                //Response.Redirect("~/Pages/Pedido.aspx?idPedido=" + e.CommandArgument.ToString(), true); 
            }
            else if (e.CommandName == "Excluir")
            {
                ExcluiPedido(int.Parse(e.CommandArgument.ToString()));
            }

            if (e.CommandName == Telerik.Web.UI.RadGrid.ExportToExcelCommandName ||
         e.CommandName == Telerik.Web.UI.RadGrid.ExportToWordCommandName ||
         e.CommandName == Telerik.Web.UI.RadGrid.ExportToCsvCommandName)
            {
                ConfigureExportgrd();
            }


        }

        public void ConfigureExportgrd()
        {
            grdPedido.ExportSettings.ExportOnlyData = true;
            grdPedido.ExportSettings.IgnorePaging = true;
            grdPedido.ExportSettings.OpenInNewWindow = true;
            grdPedido.ExportSettings.FileName = string.Format("Pedidos_{0}", DateTime.Now.Ticks);
         
        }

        void RedirecionaEditaPedido(int idPedido)
        {

            try
            {
                //Server.Execute("~/Pages/Pedido.aspx?idPedido=" + idPedido);
                //Response.Redirect("~/Pages/Pedido.aspx?idPedido=" + idPedido, true);
                //Server.Transfer("~/Pages/Pedido.aspx?idPedido=" + idPedido, true);

                //pnlGrid.Redirect("~/Pages/Pedido.aspx?idPedido=" + idPedido);
                RadAjaxManager1.Redirect("~/Pages/Pedido.aspx?idPedido=" + idPedido);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        void ExcluiPedido(int idPedido)
        {

            Domain.Model.ServicoPedido.Delete(s => s.Id_Pedido == idPedido);

            Domain.Model.ProdutoPedido.Delete(s => s.Id_Pedido == idPedido);

            Domain.Model.ContaReceber.Delete(c => c.Id_Pedido == idPedido);
            Domain.Model.StatusPedido.Delete(c => c.Id_Pedido == idPedido);
            Domain.Model.Pedido.Delete(s => s.Id_Pedido == idPedido);
            PopulaPedidos();
            RadWindowManager1.RadAlert("Operação realizada com sucesso", 0, 0, "Sucesso", "");
        }

        protected void grdPedido_PdfExporting(object sender, GridPdfExportingArgs e)
        {

        }



    }
}